#pragma once 

#include <cstdio>
#include <iostream>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

void daemonize()
{
    int fd = 0;
    signal(SIGPIPE, SIG_IGN);

    //让自己不要成为进程组组长
    if (fork() > 0)
    {
        exit(0);
    }
    //设置独立会话
    setsid();
    //重定向
    if ((fd = open("/dev/null", O_RDWR)) != -1)
    {
        dup2(fd, STDIN_FILENO);
        dup2(fd, STDOUT_FILENO);
        dup2(fd, STDERR_FILENO);
        //关闭不需要的fd
        close(fd);
    }
}
